package cn.gorit.content.controller;

import cn.gorit.common.lang.Result;
import cn.gorit.content.service.BlogService;
import cn.gorit.dto.content.BlogDto;
import cn.gorit.dto.content.BlogReadDto;
import cn.gorit.entity.content.Blog;
import cn.gorit.utils.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @version v1.0
 * @Classname BlogController
 * @Description 文章管理模块
 * @Author CodingGorit
 * @Created on 2021/3/30
 * @IDLE IntelliJ IDEA
 **/
@RestController
@RequestMapping("/api/v1/front")
public class BlogController {

    @Autowired
    private BlogService service;

    // 添加博客
    @PostMapping("/blog")
    public Result<Object> addBlog(@RequestBody Blog dto) {
        return service.save(dto);
    }

    // 阅读博客
    @GetMapping("/blog/read/{blogId}")
    public Result<BlogReadDto> readBlog(@PathVariable("blogId") String blogId) {
        return service.readBlog(blogId);
    }

    // 根据用户 ID 查询 博客列表

    // 分页获取博客列表
    @PostMapping("/blog/page")
    public Result<Page<BlogDto>> getBlogByPage(@RequestBody Page<BlogDto> page) {
        return service.getBlogListByPage(page);
    }

    // 逻辑删除博客
    @DeleteMapping("/blog/{blogId}")
    public Result<Object> deleteBlogByBlogId(@PathVariable("blogId") String blogId) {
        return service.deleteBlogByBlogId(blogId);
    }

    // 修改文章
    @PutMapping("/blog")
    public Result<Object> updateBlog(@RequestBody Blog dto) {
        return service.updateBlogByDto(dto);
    }


    // 【后台】根据 ID 获取博客详情信息
    @GetMapping("/blog/detail/{blogId}")
    public Result<Blog> getBlogDetail(@PathVariable("blogId") String blogId) {
        return service.getBlogById(blogId);
    }

    // 【后台】开启文章置顶
//    @PutMapping("/top/{status}/{blogId}")
//    public Result<Object> updateTop(@PathVariable("status") Integer status, @PathVariable("blogId") String blogId) {
//        return service.updateBlogTopById(status, blogId);
//    }

    // 修改文章收藏数量【被用户模块的收藏 RPC 远程调用】
    @PutMapping("/blog/col")
    public Result<Object> updateCol(@RequestBody BlogDto dto) {
        return service.updateBlogCollection(dto);
    }

    // 开启文章评论
    @PutMapping("/comment/{enable}/{blogId}")
    public Result<Object> updateCommentAble(@PathVariable("enable") Integer enable, @PathVariable("blogId") String blogId) {
        return service.updateCommentAble(enable, blogId);
    }

    // 点赞与取消点赞
}
